package com.doit.day07

object _04_柯里化 {
  def main(args: Array[String]): Unit = {

    //(a:Int,b:Int)==> 参数列表中放多个参数==》 将多个参数分别放在多个括号里面
    def add(a:Int,b:Int)={
      a+b
    }
    add(1,2)

    //
    def add1(a:Int)(b:Int)={
      a+b
    }

    val intToInt: Int => Int = add1(1)
    val res: Int = intToInt(2)


//    def abc(a:A,b:a.B){}


//    def abc1(a:A)(b:a.B){1}

//    val bToUnit: A#B => Int = abc1(new A)

//    val i: Int = bToUnit(new A#B)


    //第三个作用==》 更好的做隐式参数的传递
    implicit val a :Int= 10
    implicit val b :String= "20"



    //如果参数名前面加上了implicit 那么他就可以传隐式参数(不需要我们自己传，编译器会自动找到这个隐式参数)
    def add2(implicit a:Int,b:String): Int ={
      a+b.toInt
    }

    def add3(a:Int)(implicit b:String): Int ={
      a+b.toInt
    }

    val i1: Int = add2(a, b)
    println(i1)

    println(add2)











  }

}


class A{
  class B
}
